package com.eddie.sort;

import java.util.Arrays;

public class SelectSort {
    public static void main(String[] args) {
//        int[] arr = {101, 34, 119, 1, -1,90,123};
        int[] arr = new int[80000];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 8000000);
        }
        long start = System.currentTimeMillis();
        selectSort(arr);
        long end = System.currentTimeMillis();
        System.out.printf("花费时间是：%d秒", (end - start) / 1000);

    }

    /**
     * 选择排序
     */
    public static void selectSort(int[] arr) {
        //保存最小值
        int min = 0;
        //最小值下标
        int index;
        //for循环length-1次要给内嵌for循环后移空间
        for (int i = 0; i < arr.length - 1; i++) {
            //先初始化最小值下标为当前的数组下标
            index = i;
            min = arr[i];
            //j=i+1是为了循环开始就根据主for循环参数进行比较
            for (int j = i + 1; j < arr.length; j++) {
                //因为index等于主for的元素下标，所以直接与他作比较如果说当前遍历的数小于对方那么就修改最小值下标与最小值
                if (arr[j] < arr[index]) {
                    index = j;
                    min = arr[j];
                }
            }
            //循环完毕将该下标的数字与最小值下标数字交换
            //如果最小index等于i表示没有找到最小那么设置
            if (index != i) {
                arr[index] = arr[i];
                arr[i] = min;
            }
        }
//        System.out.println(Arrays.toString(arr));
    }
}
